/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ASAInstruction;

import application.FunctionStack;
import application.Memory;
import java.util.List;

/**
 * Classe représentant une fonction
 * @author O.Riad
 * @author D.Romain
 *
 */
public class ASAInstructFunction extends ASAInstruction {

    private String functionName;
    private ASAInstruction code;
    private List<String> params;

    /**
     * Constructeur - avec le nom de la fonction, le bloc d'instructions et 
     * les paramètres
     * @param functionName
     * @param code
     * @param params 
     */
    public ASAInstructFunction(String functionName, ASAInstructBloc code, List<String> params) {
        this.functionName = functionName;
        this.code = code;
        this.params = params;
        if (!this.params.isEmpty()) {
            Memory.add(this.functionName, params);
        }
        //System.out.println("Déclarataion de la fonction : "+this.functionName);
        FunctionStack.addFunction(this.functionName, code, this.params);
        FunctionStack.setParseCurrentFunction(this.functionName);
    }

    @Override
    public int execute() {
        //FunctionStack.setExecCurrentFunction(this.functionName);
        return 1;
    }
}
